Example: allocate 2D array,
initialise and delete it.
void de_allocate(long double **data) {
   for (int i = 0; i < NumRows;  i++)
       delete[] data[i]; // STEP 1: delete the columns
   delete[] data;  // STEP 2: delete the rows
   }
void initialise(long double ** data){
for (int i = 0; i < NumRows; i++)
      for (int j = 0; j < NumCols; j++)
         data[i][j] = i + j;   // arbitrary initialisation
}